#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    // 检查参数数量是否正确
    if (argc != 2) {
        fprintf(stderr, "Usage: %s <directory>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    // 打开目录
    DIR *dir = opendir(argv[1]);  // 系统调用，打开指定目录
    if (!dir) {
        perror("opendir");
        exit(EXIT_FAILURE);
    }

    struct dirent *entry;
    // 遍历目录中的每个条目
    while ((entry = readdir(dir)) != NULL) {  // 系统调用，读取目录条目
        // 跳过当前目录"."和上级目录".."
        if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
            continue;
        }
        
        // 打印文件名和inode号
        printf("Filename: %s, Inode: %lu\n", entry->d_name, (unsigned long)entry->d_ino);
    }

    // 关闭目录
    closedir(dir);
    return 0;
}